{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.environ['CUDA_VISIBLE_DEVICES'] = ''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['../summarization/filtered-en00.splitted.translated',\n",
       " '../summarization/filtered-en01.splitted.translated',\n",
       " '../summarization/filtered-en02.splitted.translated',\n",
       " '../summarization/filtered-en03.splitted.translated',\n",
       " '../summarization/filtered-en04.splitted.translated',\n",
       " '../summarization/filtered-en05.splitted.translated']"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from glob import glob\n",
    "import json\n",
    "\n",
    "xwikis = sorted(glob('../summarization/filtered-en*.splitted.translated'))\n",
    "xwikis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import malaya\n",
    "import json\n",
    "import re\n",
    "from glob import glob\n",
    "from tqdm import tqdm\n",
    "from malaya.text.rouge import postprocess_summary, filter_rouge, _get_word_ngrams, _rouge_clean, cal_rouge\n",
    "from malaya.text.function import split_into_sentences\n",
    "import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def remove_parenthesis(string, substring, lower_case=True):\n",
    "    removed = []\n",
    "    for r in re.finditer(r'\\([^()]*\\)', string):\n",
    "        span = r.span()\n",
    "        subs = string[span[0]: span[1]]\n",
    "        if substring in (subs.lower() if lower_case else subs):\n",
    "            removed.append(span)\n",
    "\n",
    "    if len(removed):\n",
    "        selected = [string[:removed[0][0]]]\n",
    "        for i in range(0, len(removed) - 1, 2):\n",
    "            selected.append(string[removed[i][1]: removed[i + 1][0]])\n",
    "\n",
    "        selected.append(string[removed[-1][1]:])\n",
    "        return re.sub(r'[ ]+', ' ', ' '.join(selected)).strip()\n",
    "    else:\n",
    "        return string\n",
    "    \n",
    "def cut_article(article, maxlen = 900):\n",
    "    splitted = malaya.text.function.split_into_sentences(article, minimum_length = 2)\n",
    "    temp = []\n",
    "    for s in splitted:\n",
    "        temp.append(s)\n",
    "        if len(' '.join(temp).split()) > maxlen:\n",
    "            break\n",
    "    \n",
    "    return ' '.join(temp)\n",
    "\n",
    "def filtering_rouge(summary, contents, start = 0.15, increment = 0.05, break_at = 900):\n",
    "    filtered = contents[:]\n",
    "    i = 0\n",
    "    while len(filtered.split()) > break_at:\n",
    "        filtered = filter_rouge(summary, filtered, n = 1, threshold = start + increment * i)\n",
    "        i += 1\n",
    "    return filtered"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "19723it [00:03, 5118.20it/s]\n",
      "23478it [00:05, 4307.66it/s]\n",
      "36449it [00:08, 4454.48it/s]\n",
      "29775it [00:08, 3472.90it/s]\n",
      "35222it [00:05, 6275.29it/s]\n",
      "28575it [00:04, 6785.13it/s]\n"
     ]
    }
   ],
   "source": [
    "before, after = [], []\n",
    "for f in xwikis:\n",
    "    limit = random.randint(20000, 30000)\n",
    "    count = 0\n",
    "    with open(f) as fopen:\n",
    "        for l in tqdm(fopen):\n",
    "            data = json.loads(l)\n",
    "\n",
    "            contents = ' '.join(data['translated-article'])\n",
    "            summary = remove_parenthesis(data['translated-summary'], 'jadual di bawah')\n",
    "            \n",
    "            if len(set(contents.split())) <= 20 or len(set(summary.split())) <= 20:\n",
    "                continue\n",
    "            \n",
    "            t = malaya.text.function.split_into_sentences(summary)\n",
    "            \n",
    "            if len(t) > 2:\n",
    "            \n",
    "                before.append(t)\n",
    "                after.append(contents)\n",
    "                \n",
    "                count += 1\n",
    "                \n",
    "            if count >= limit:\n",
    "                break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(['Maghribi adalah anggota PBB dan tergolong dalam Kesatuan Afrika, Liga Arab, Arab Maghreb Union (UMA), Organisasi Kerjasama Islam (OIC), Gerakan Bukan Berasingan dan Komuniti Negara Sahel-Sahara (CEN_SAD).',\n",
       "  'Hubungan Maghribi sangat berbeza antara negara Afrika, Arab, dan Barat.',\n",
       "  'Maghribi mempunyai hubungan yang kuat dengan Barat untuk mendapatkan faedah ekonomi dan politik.',\n",
       "  'Perancis dan Sepanyol tetap menjadi rakan dagang utama, serta pemiutang utama dan pelabur asing di Maghribi.',\n",
       "  'Dari jumlah pelaburan asing di Maghribi, Kesatuan Eropah melabur sekitar 73.5%, sedangkan, dunia Arab hanya melabur 19.3%.',\n",
       "  'Banyak negara dari wilayah Teluk dan Maghreb Parsi semakin terlibat dalam projek pembangunan berskala besar di Maghribi.'],\n",
       " 'Maghribi mempunyai sejarah pemerintahan raja. Sebagai contoh, raja Maghribi pada tahun 1965 menggantung parlimen dan memerintah sebagai diktator selama dua tahun. Hubungan luar negeri dengan kuasa barat menjadi tegang akibat ini. Memeluk Maghribi sebagai negara demokratik menjadi penting sekiranya Maghribi ingin menerima pinjaman dan pelaburan oleh kuasa asing. Maghribi secara diam-diam dipisahkan oleh Sepanyol dan Perancis dan pada tahun 1912 Maghribi menjadi pelindung. Sepanyol dan Perancis kini merupakan rakan pengeksport dan pengimport terbesar ke Maghribi. Perancis kini menjadi rumah bagi lebih dari satu juta orang Maghribi yang tinggal secara sah di negara ini. Ini adalah populasi terbesar orang Maghribi di sebuah negara, diikuti oleh Sepanyol. Bekas penjajah ini tetap berpengaruh dalam hal ekonomi, seperti projek pembangunan, pelaburan, perdagangan, dan pinjaman. Hubungan dengan kuasa asing, terutama dengan Barat, juga diperkuat ketika Maghribi telah meliberalisasikan ekonominya dan melaksanakan reformasi ekonomi besar. Maghribi kini lebih fokus untuk mempromosikan pelaburan langsung asing. Pada tahun 2007, Maghribi mengadopsi Dana Pembangunan Hassan II, yang merupakan langkah-langkah yang mempermudah prosedur untuk menjadikan proses ini lebih mudah dan bermanfaat dari segi kewangan bagi pelabur asing. Eksport Maghribi terutamanya pertanian, dan merupakan salah satu pengeksport fosfat terbesar di dunia. Di samping itu, Maghribi mempunyai perairan perikanan yang kaya, industri pelancongan, dan sektor pembuatan kecil. Sebagai contoh, Maghribi mempunyai sejarah panjang menyokong Amerika Syarikat dan hasilnya mendapat sokongan kewangan. Pasukan Maghribi terlibat di Bosnia dan juga di Somalia, semasa operasi Desert Storm. Hubungan antara negara-negara ini diperkuat ketika Maghribi mengirim pasukan untuk membantu Arab Saudi semasa Perang Teluk 1992. Ini dianggap sebagai \"geseran untuk menyokong sekutu Barat dan Arab\". Hubungan Maghribi dengan negara-negara di Timur Tengah dan sumbangannya terhadap perjuangan Palestin telah mewujudkan hubungan yang lebih kuat antara negara-negara ini. Peningkatan imigresen lain dari Maghribi ke Perancis adalah semasa perang kemerdekaan Algeria. Pada masa ini, Maghribi menandatangani perjanjian pengambilan pekerja utama dengan negara-negara Eropah, seperti Perancis, Jerman Barat, Belgium, dan Belanda. Banyak negara mempunyai hubungan yang kuat dengan Maghribi kerana sejarahnya menjadi sekutu barat. Sebagai contoh, Maghribi mempunyai salah satu perjanjian persahabatan terpanjang dengan Amerika Syarikat. Manfaat geopolitik terbukti kerana hubungan dengan Maghribi bermaksud sekutu ditubuhkan di Afrika, di wilayah Maghreb. Identiti Maghribi sebagai negara Islam juga telah mengukuhkan hubungan dengan negara-negara Teluk Parsi akibat 9/11 dan \"perang melawan keganasan\". Ini telah mengakibatkan negara-negara, seperti GCC (Arab Saudi, Bahrain, Oman, Qatar, Emiriah Arab Bersatu), memilih untuk melabur lebih banyak di dunia Arab. Banyak negara di wilayah Maghreb juga melabur di Maghribi kerana persamaan identiti yang dirasakan. Maghribi sangat aktif dalam urusan Maghreb dan Afrika. Kesatuan Maghreb Arab terdiri daripada Maghribi, Algeria, Libya, Mauritania, dan Tunisia. Maghribi bergabung semula dengan AU pada 30 Januari 2017 AU mengakui Maghribi sebagai negara anggota. Terdapat hubungan yang signifikan dengan negara-negara Afrika Barat dan Sahel dan Maghribi menjalin hubungan baik dengan Senegal, Gabon dan Burkina Faso. Berikutan penandatanganan Deklarasi Prinsip Israel-Palestin pada bulan September 1993, Maghribi mempercepat hubungan ekonomi dan hubungan politiknya dengan Israel. Pada bulan September 1994, Maghribi dan Israel mengumumkan pembukaan pejabat penghubung dua hala. Maghribi mengekalkan hubungan erat dengan Arab Saudi dan negara-negara Teluk Parsi, yang telah memberikan bantuan kewangan kepada Maghribi. Maghribi juga merupakan antara negara Arab dan Islam pertama yang mengecam serangan 11 September di Amerika Syarikat dan menyatakan solidariti dengan rakyat Amerika dalam perang melawan keganasan. Ini telah menyumbang kepada usaha pengaman PBB di benua itu. Maghribi telah menjalin hubungan diplomatik dengan 151 negara (termasuk Negara Palestin), Kudus, Perintah Ketenteraan Berdaulat Malta, dan Kesatuan Eropah.')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "before[-1], after[-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('article.json', 'w') as fopen:\n",
    "    json.dump({'before': before, 'after': after}, fopen)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
